/**
 * @param {string} s
 * @return {string[]}
 */
 var restoreIpAddresses = function(s) {
    let res = []
    let path = []
    const backTracking = function(startIndex){
      // 传入开始的下标
      let len = path.length // 获得path的长度
      if(len > 4) return // 如果path里面的长度大于4 就直接返回
      if(len === 4 && startIndex === s.length){
        // 如果path里面有四个 并且起始的位置下标是字符串的长度
        // 就把path里面的用.拼接起来加入res中
        res.push(path.join('.'))
        return
      }
      for(let i = startIndex;i < s.length;i++){
        const str = s.slice(startIndex,i+1)
        if(str.length > 3 || +str > 255) break // 如果截取的字符串长度大于3 并且大于255 就退出本次循环
        if(str.length > 1 && str[0] === '0') break // 如果这个字符串有两个字母 但是第一个是0 也退出本次循环
        path.push(str)
        backTracking(i+1)
        path.pop()
      }
    }
    backTracking(0)
    return res
};